<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <!-- 首先，我们需要牢记两点：
    ①__proto__和constructor属性是对象所独有的；
    ② prototype属性是函数所独有的。但是由于JS中<<函数也是一种对象>>，所以函数也拥有__proto__和constructor属性，这点是致使我们产生困惑的很大原因之一 -->


    <script>


function Student(newId, newName){
		this.id = newId;
		this.name = newName;//这俩是每个实例对象特有的
		// this.prototype = "haha";//这相当于给this添加了一个名叫prototype的属性,不能这么用.
		// this.prototype.eat = function(){
		// 	console.log("eat");
		// }//不能写在里面this是实例对象,实例对象没有prototype的方法
	}
	Student.prototype.eat = function(){
		console.log("eat");
	}
	Student.prototype.teacher = "dahuang";//为原型对象添加新共有属性
	let s = new Student(1,"laowang");

	s.teacher = "xiaobai";//为实例对象添加了一个实例属性,覆盖了实例对象原有的原型对象.
	delete s.teacher;
	console.log(s.teacher);//删除后,实例对象的原型对象属性恢复.
	
	console.log(s.__proto__ === Student.prototype);//true
	console.log(Student.prototype.constructor === Student);//true	

    </script>
</body>
</html>